;:sys36864
	;.opt oo
	*= $c000
ziel	=2049
ser1	=1 	; versionsnummer
ser2	=2 	; sekundaer
cint	=65409
open	=$ffc0
close	=$ffc3
chkout	=$ffc9
clrchn	=$ffcc
print	=$ffd2
get	=$ffe4
ptr	=2
clall	=$ffe7
axout	=$bdcd
strout	=$ab1e
anzprg	=4
gr	=5
setnam	=$ffbd
dn	=$b8
namlen	=183
sa	=$b9
len	=251
return	=$aad7
tsys	=158
bank	=1
tmp	=166
crs1	=$cc
crs2	=$cd
crs3	=$cf
name	=820
zeile	=214
space	=$ab3f
vic	=53248
bild	=$d1
namber	=$cb00
calc	=$e9f0
tmp2	=181
scradr	=648
scrmem	=$d000
clrscr	=$e544
sendnam	=$f3d5
talk	=$ffb4
sectalk	=$ff96
iecin	=$ffa5
status	=$90
clsfil	=$f642
fa	=$ba
key	=198
clrx	=59903
alle	=139
lfd	=140
chkin	=$ffc6
fehler	=$cf00
real	=141
last	=142
aktlen	=786
lenpos	=178
memend	=$bf00
save	=$ffd8
ioflag	=157
reset	=65532
base	jmp losgehts
help	.byte "\x11 bitte geben sie die filenamen der max."
	.byt 13
	.byte " 60 einzelfiles ein. '$': directory"
	.byt 13
	.byte "                     '*': ende"
	.byt 13
	.byte "                     '?': korrektur\x11"
	.byt 13,0
holnam1	.byt 13
	.byte " name des "
	brk
holnam2	.byte ". files ? "
	brk
taste	.byt 13
	.byte " - weiter mit taste -"
	brk
also	.byte "\x13\x11\x11\x11\x11\x11 es wurden "
	brk
also2	.byte " files erfasst."
	.byt 13
	.byte " sind die alle auf einer diskette ? "
	brk
gesask	.byt 13
	.byte "\x11 gesamtfile - name ? "
	brk
oha	.byte "\x13\x11\x11\x11\x11\x11 bearbeite file nr. "
	brk
ohu	.byt 13
	.byte " name: "
	brk
ohe	.byt 13
	.byte "\x11\x11\x11\x11 - bitte diskette einlegen -"
	brk
csu	.byte "\x13\x11\x11\x11\x11\x11\x11\x11\x11\x11 diskfehler: "
	brk
spd	.byte "\x11  (v) nochmal versuchen"
hope	.byt 13
	.byte "  (n) naechstes file"
	.byt 13
	.byte "  (e) ende"
	brk
dahin	.byt 13
	.byte " ladeadresse : "
	brk
loada	.byte "\x13\x11\x11\x11\x11\x11\x11\x11\x11\x11 startadresse: "
	brk
full	.byt 13
	.byte "\x11\x11 file zu lang - speicher voll !!\x11"
	brk
jetzt	.byte "\x13\x11\x11\x11\x11\x11 gesamtfile wird gespeichert"
	.byt 13
	.byte "\x11 - bitte diskette einlegen -"
	brk
alk	.byt 13
	.byte "\x11 speicherung beendet. alles okay.\x11"
bob	.byt 13
	.byte " programm nochmal starten ? [j/n]"
	brk
watnu	.byt 13
	.byte "  (v) nochmal versuchen"
	.byt 13
	.byte "  (e) ende\x11\x11"
	brk
kopf	=*
bas	=*
	.word endp,1988
	.byt tsys
	.byte "2061"
	brk
endp	=*-bas+ziel
	.word 0
	jsr cint
	jsr clall
	lda #6
	sta vic+32
	sta vic+33
	lda fa
	cmp #8
	bcc set8b
	cmp #15
	bcc okayb
set8b	lda #8
	sta fa
okayb	lda #<genb
	ldy #>genb
	sta ptr
	sty ptr+1
	jsr hol
	sta anzprg
	sty gr
	lda #<txt1
	ldy #>txt1
	jsr strout
fileloop	inc gr
	lda #<txt2
	ldy #>txt2
	jsr strout
	ldx gr
	lda #0
	jsr axout
	lda #<txt3
	ldy #>txt3
	jsr strout
	ldx anzprg
	lda #0
	jsr axout
	ldx ptr
	ldy ptr+1
	jsr setnam
	jsr hol
	bne gon
	lda #<txt4
	ldy #>txt4
	jsr strout
	jsr clall
	ldx gr
	dex
	lda #0
	jsr axout
	jmp return
gon	iny
	sty namlen
	sty sa
	sty dn
getnam	jsr hol
	beq hates
	inc namlen
	bne getnam
qfileloop	bcc fileloop
hates	lda #54
	sta bank
	jsr open
	inc bank
	ldx #1
	jsr chkout
	jsr hol
	jsr print
	jsr hol
	jsr print
	jsr hol
	sta len
	jsr hol
	sta len+1
saveprg	lda len
	bne nochwas
	lda len+1
	beq fertig
	dec len+1
nochwas	dec len
	jsr hol
	jsr print
	clc
	bcc saveprg
fertig	jsr clrchn
	lda #1
	jsr close
	clc
	bcc qfileloop
hol	=*-bas+ziel
	lda #54
	sta bank
	ldy #0
	lda (ptr),y
	inc ptr
	bne loop1
	inc ptr+1
loop1	inc bank
	and #$ff
	rts
txt1	=*-bas+ziel
atxt1	.byte "\x05\x08\x8e\x93\xa4\xa4\xa4\xa4\xa4\xa4\xa4\xa4\xa4\xa4\xa4\xa4\xa4\xa4\xa4\xa4\xa4\xa4\xa4\xa4\xa4\xa4\xa4\xa4\xa4\xa4\xa4\xa4\xa4\xa4\xa4\xa4\xa4\xa4\xa4\xa4\xa4\xa4\xa4\xa4"
	.byte "\x12archive v"
	.byt ser1+48,".",ser2+48,32
mode	.byte "gen    von nikolaus heusler"
	.byte "(c) nh-020988-arr       ein nss programm"
	.byt 13
art	.byte "\x11die files werden erzeugt...\x11\x11"
	brk
txt2	=*-bas+ziel
	.byt 13
	.byte "\x91file "
	brk
txt3	=*-bas+ziel
	.byt 13
	.byte "\x91\x1d\x1d\x1d\x1d\x1d\x1d\x1d\x1dvon "
	brk
txt4	=*-bas+ziel
	.byt 13
	.byte "\x91fertig !!    files generiert\x9d\x9d\x9d\x9d\x9d\x9d\x9d\x9d\x9d\x9d\x9d\x9d\x9d\x9d\x9d\x9d\x9d\x9d"
	brk
endkopf	=*
genb	=*-bas+ziel
schieb	=endkopf-kopf-256
copydown	ldy #0
copy1	lda kopf,y
	sta ziel,y
	lda kopf+schieb,y
	sta ziel+schieb,y
	iny
	bne copy1
	rts
getname	jsr delber
	ldx #0
	stx len
keylp	lda #0
	sta crs1
wk	jsr get
	beq wk
	ldx #2
	stx crs2
wx	ldx crs3
	bne wx
	inc crs1
	cmp #13
	bne text
	ldx len
	beq keylp
	rts
text	cmp #20
	bne nodel
	ldx len
	beq keylp
	jsr print
	dec len
	bpl keylp
nodel	cmp #32
	bcs ok1
wrong	jmp keylp
ok1	tax
	bpl ok
	cmp #149
	bcc wrong
	cmp #156
	bcc ok
	cmp #160
	bcc wrong
ok	ldx len
	cpx #16
	bcs keylp
	sta name,x
	jsr print
	inc len
	bne keylp
delber	ldx #16
	lda #"\xa0"
d1	jsr print
	dex
	bne d1
	ldx #16
	lda #"\x9d"
d2	jsr print
	dex
	bne d2
	rts
cax	dex
	stx tmp2
	lda #0
	sta tmp+1
	txa
	ldx #4
cax1	asl
	rol tmp+1
	dex
	bne cax1
	adc tmp2
	sta tmp
	lda tmp+1
	adc #>namber
	sta tmp+1
	rts
xout	lda #0
	jmp axout
scroll	ldx #11
scr1	jsr calc
	lda bild
	sta tmp
	lda bild+1
	sta tmp+1
	inx
	jsr calc
	ldy #39
scr2	lda (bild),y
	sta (tmp),y
	dey
	bpl scr2
	cpx #23
	bcc scr1
up	lda #"\x91"
	jmp print
put	ldy #0
	sta (ptr),y
	inc ptr
	bne raus
	inc ptr+1
raus	rts
close9	jsr clrchn
	lda #9
	jmp close
dir	ldy #0
	sty tmp
	sty tmp2
	lda scradr
	sta tmp+1
	lda #>scrmem
	sta tmp2+1
	ldx #48
	sei
	stx bank
	ldx #4
	lda zeile
	pha
copy3	lda (tmp),y
	sta (tmp2),y
	dey
	bne copy3
	inc tmp+1
	inc tmp2+1
	dex
	bne copy3
	ldx #55
	stx bank
	cli
	jsr clrscr
	ldx #<name
	ldy #>name
	lda len
	jsr setnam
	lda #$60
	sta sa
	jsr sendnam
	lda fa
	jsr talk
	lda sa
	jsr sectalk
	lda #0
	sta status
	ldy #3
l1	sty tmp
	jsr iecin
	sta tmp+1
	ldy status
	bne l4
	jsr iecin
	ldy status
	bne l4
	ldy tmp
	dey
	bne l1
	ldx tmp+1
	jsr axout
	jsr space
l3	jsr iecin
	ldx status
	bne l4
	tax
	beq l2
	jsr print
	bcc l3
l2	jsr return
	ldy #2
	bne l1
l4	jsr clsfil
	lda #<taste
	ldy #>taste
	jsr strout
	jsr waitkey
	lda #1
	sta vic+33
	jsr clrscr
	lda #6
	sta vic+33
	pla
	sta zeile
	ldx #48
	sei
	stx bank
	ldx #4
	lda #>scrmem
	sta tmp+1
	ldy #0
	sty tmp
	sty tmp2
	lda scradr
	sta tmp2+1
copy2	lda (tmp),y
	sta (tmp2),y
	dey
	bne copy2
	inc tmp+1
	inc tmp2+1
	dex
	bne copy2
	ldx #55
	stx bank
	cli
	rts
waitkey	lda #0
	sta key
wkk	cmp key
	beq wkk
	dec key
	rts
losgehts	jsr cint
	jsr clall
	lda #6
	sta vic+32
	sta vic+33
	lda fa
	cmp #8
	bcc set8
	cmp #15
	bcc okay
set8	lda #8
	sta fa
okay	lda #0
	sta ioflag
	sta art
	sta anzprg
	lda #32
	ldx #2
clrmod	sta mode,x
	dex
	bpl clrmod
	lda #<atxt1
	ldy #>atxt1
	jsr strout
	lda #17
	sta art
	lda #"g"
	sta mode
	lda #"e"
	sta mode+1
	lda #"n"
	sta mode+2
	lda #<help
	ldy #>help
	jsr strout
eing1	inc anzprg
eing2	lda #<holnam1
	ldy #>holnam1
	jsr strout
	ldx anzprg
	cpx #10
	bcs gut
	jsr space
gut	jsr xout
	lda #<holnam2
	ldy #>holnam2
	jsr strout
	jsr getname
	lda name
	cmp #"*"
	bne noend
	lda anzprg
	cmp #3
	bcs jaend
stop	jsr up
	bcc eing2
noend	cmp #"?"
	bne nokor
	lda zeile
	cmp #12
	bcc stop
	dec anzprg
	jsr up
	bcc stop
nokor	cmp #"$"
	bne nodir
	jsr dir
	jmp stop
nodir	ldx anzprg
	cpx #61
	bcs stop
	jsr cax
	ldy len
	lda #0
	sta (tmp),y
	dey
transnam	lda name,y
	sta (tmp),y
	dey
	bpl transnam
	lda zeile
	cmp #23
	bcc eing1
	jsr scroll
	jmp eing1
jaend	ldx #5
clrpag	jsr clrx
	inx
	cpx #24
	bcc clrpag
	lda #<also
	ldy #>also
	jsr strout
	dec anzprg
	ldx anzprg
	jsr xout
	lda #<also2
	ldy #>also2
	jsr strout
	lda #0
	sta key
wjn	jsr get
	cmp #"j"
	beq off
	cmp #"n"
	bne wjn
off	jsr print
	sec
	sbc #"j"
	sta alle
	lda #<gesask
	ldy #>gesask
	jsr strout
	jsr getname
	lda name
	cmp #"*"
	beq jaend
	cmp #"?"
	beq jaend
	lda #0
	sta lfd
	sta real
	jsr copydown
	lda #<genb
	ldy #>genb
	sta ptr
	sty ptr+1
	jsr put
	ldy #15
	sty sa
	sty dn
	lda #0
	sta namlen
	jsr open
main	inc lfd
	ldx lfd
	dex
	cpx anzprg
	bne sleep
	jmp ende
sleep	ldx #5
	lda ptr
	sta last
	lda ptr+1
	sta last+1
clrp2	jsr clrx
	inx
	cpx #19
	bcc clrp2
	lda #<oha
	ldy #>oha
	jsr strout
	lda #0
	ldx lfd
	jsr xout
	lda #<ohu
	ldy #>ohu
	jsr strout
	ldx lfd
	jsr cax
	lda tmp
	ldy tmp+1
	jsr strout
	lda alle
	bmi weiter
	lda #<ohe
	ldy #>ohe
	jsr strout
	jsr waitkey
	ldx #11
	jsr clrx
	lda alle
	bne weiter
	lda #-1
	sta alle
weiter	ldy #-1
wtr	iny
	lda (tmp),y
	sty tmp2
	jsr put
	ldy tmp2
	tax
	bne wtr
	tya
	ldx tmp
	ldy tmp+1
	jsr setnam
	lda #0
	sta sa
	lda #9
	sta dn
	jsr open
	ldx #15
	jsr chkin
	ldx #-1
geterr	inx
	jsr get
	sta fehler,x
	cmp #13
	bne geterr
	lda #0
	sta fehler+1,x
	jsr clrchn
	lda fehler
	cmp #"0"
	beq aechtz
	jsr close9
	lda #<csu
	ldy #>csu
	jsr strout
	lda #<fehler
	ldy #>fehler
	jsr strout
	lda #<spd
	ldy #>spd
	jsr strout
gti	jsr get
	cmp #"e"
	bne noe
halt	lda last
	sta ptr
	lda last+1
	sta ptr+1
	jmp ende
noe	cmp #"v"
	bne nov
	dec lfd
qmain	lda last
	sta ptr
	lda last+1
	sta ptr+1
	jmp main
nov	cmp #"n"
	bne gti
	beq qmain
aechtz	ldx #9
	jsr chkin
	jsr get
	jsr put
	pha
	jsr get
	jsr put
	pha
	lda #<loada
	ldy #>loada
	jsr strout
	pla
	tay
	pla
	tax
	tya
	jsr axout
	lda ptr
	sta lenpos
	lda ptr+1
	sta lenpos+1
	lda #0
	sta aktlen
	sta aktlen+1
	jsr put
	jsr put
	lda #<dahin
	ldy #>dahin
	jsr strout
	ldx ptr
	lda ptr+1
	jsr axout
loadloop	jsr iecin
	tax
	lda status
	lsr
	lsr
	bcs abort
	txa
	jsr put
	inc aktlen
	bne noinc
	inc aktlen+1
noinc	lda ptr+1
	cmp #>memend
	bcc loadloop
	jsr close9
	lda #<full
	ldy #>full
	jsr strout
	lda #<hope
	ldy #>hope
	jsr strout
	lda #0
	sta key
getne	jsr get
	cmp #"e"
	beq qhalt
	cmp #"n"
	bne getne
	jmp qmain
qhalt	jmp halt
abort	jsr close9
	ldy #0
	lda aktlen
	sta (lenpos),y
	iny
	lda aktlen+1
	sta (lenpos),y
	inc real
	jmp main
ende	lda #0
	jsr put
	lda real
	sta genb
end	ldx #5
clrpg3	jsr clrx
	inx
	cpx #19
	bcc clrpg3
	lda #<jetzt
	ldy #>jetzt
	jsr strout
	jsr waitkey
	ldx #7
	jsr clrx
	lda len
	ldx #<name
	ldy #>name
	jsr setnam
	lda #54
	sta bank
	ldx ptr
	ldy ptr+1
	lda #<ziel
	sta tmp
	lda #>ziel
	sta tmp+1
	lda #tmp
	jsr save
	inc bank
	ldx #15
	jsr chkin
	ldx #-1
geterr2	inx
	jsr get
	sta fehler,x
	cmp #13
	bne geterr2
	lda #0
	sta fehler+1,x
	jsr clrchn
	lda fehler
	cmp #"0"
	beq aechtz2
	jsr close9
	lda #<csu
	ldy #>csu
	jsr strout
	lda #<fehler
	ldy #>fehler
	jsr strout
	lda #<watnu
	ldy #>watnu
	jsr strout
	lda #0
	sta key
wat	jsr get
	cmp #"e"
	beq fort
	cmp #"v"
	bne wat
	jmp end
aechtz2	lda #15
	jsr close
	lda #<alk
	ldy #>alk
sout	jsr strout
	lda #0
	sta key
erwjn	jsr get
	cmp #"n"
	bne live
	jmp (reset)
live	cmp #"j"
	bne erwjn
	jmp (base+1)
fort	lda #<bob
	ldy #>bob
	bne sout
